/////////////////////////////////////////////////////////////
//                                                         //
// KconfigSize : Linuxͥ륵ѥ¬ġ //
//   оconfigܥꥹȤȥġˤĤ        //
//                                                         //
/////////////////////////////////////////////////////////////



============================================================

ΥեǤϰʲޤ

- Ĥθڥץ
- top-down ץǤθоconfigܥꥹ
- bottom-up ץǤθоconfigܥꥹ
- ġե



Ĥθڥץ
============================================================

KconfigSizeġϡconfigܤΥѥؤΥѥȤ
ڤ뤿ΥġǤڤϡʲΣĤΥץΤɤ餫ǹԤ
ޤ

(1) top-down ץ
-----------------------

桼.configե١ȤơͭCONFIG_*=
y or CONFIG_*=mˤȤʤäƤconfigܤΥѥؤΥ
Ȥ򸡾ڤޤ
ڤԤconfigܤϡоconfigܥꥹȤƻꤷޤ
ätop-downץǤϡоconfigܤꤹ뤿
  -- ١.configե
  -- оconfigܥꥹ
ΣĤѤޤ
top-downץϡ¸ߤ.configեΤɤʬХ
̤򸺤餹ȤǤΤȤäƤŬƤޤ

top-downץˤKconfigSizeġưʲ˵ޤ

KconfigSizeġϡ١Ȥʤ.configե뤫顢븡оconf
igܤ̵CONFIG_*=nˤѹ.configեޤ
.configեοϡоconfigܤοܣȤʤޤ
֡ܣפϥ١.configե뤽ΤΤʬǤ
.configե뤫饫ͥmakeӻѥ̤
¬ꤷޤ١.configե뤫make줿֥ͥ١
ͥפȤȡ١ͥΥ餢븡оconfigѥ
ͥΥʬθоconfigܤͥ륵˵
ܤ֥ѥȡפȤʤޤѥ̤ؤΥѥȤƱͤ¬ꡦ
Фޤ

ʤKconfigSizeġconfigƱΤΰ¸ưŪ˲褷ޤ
ޤꤳȤǤ
CONFIG_A depdends CONFIG_B Ȥconfigܤꡢ١Ȥʤ.config
ե CONFIG_A=yCONFIG_B=y ȤʤäƤȤޤ礦
configܤȤ CONFIG_B ꤷȤޤξ硢KconfigSize
ġϥ١.configե CONFIG_B=n ѹ뤳ȤCONFIG_B
Ѥ.configե褦ȤޤΤޤޤǤ CONFIG_A=y 
̷⤬ޤΤKconfigSizeġϡCONFIG_A  =n ѹ
ޤäƷŪCONFIG_A.configեǤ CONFIG
_ACONFIG_B Ȥ =n ˤʤޤ

top-downץǤϡ֡Ȥ˺ɬפconfigܤ̵Ȥ
ǽޤξ硢Υͥϥ֡ȤǤʤᡢ
̤¬ϼԤޤ


(2) bottom-up ץ
------------------------

оconfigܥꥹȤˡ
  - ͭCONFIG_*=yˤˤconfig
  - оݤconfig
ꤷơƸоconfigܤΥѥؤΥѥȤ
ڤˡǤ
̾־ͭˤconfigܡפȤƤϡ֡Ȥ˺ɬפconfig
ܤꤷƤޤ
bottom-upץǤϡϾȤ.configեѤޤ
Ƥ.configեϡоconfigܥꥹȤ鼫ưޤ

bottom-upץϡconfigܤΥѥȤС֤Ǥɤ
褦˿ܤΤ̩ӤԤŬƤޤͳϡbo
ttom-upץǤconfigܤΡñȥѥȡפ򻻽Ф뤿Ǥ
ñȥѥȤˤĤƤϸҡ
֡Ȥ˺ɬפconfigܤϥС󤴤Ȥѹ뤿ᡢ
оconfigܥꥹȤϥͥС󤴤ȤĴɬפ
ޤ

bottom-upץˤKconfigSizeġưʲ˵ޤ

KconfigSizeġϡоconfigܥꥹȤǡ־ͭפȻꤵ
configܤ١Ȥʤ.configեޤ
³ơ١.configե뤫顢룱Ĥθоconfigܤͭ
CONFIG_*=yˤˤ.configեޤ
ä.configեοϡоconfigܤοܣȤ
ޤ
.configե뤫饫ͥmakeӻѥ̤
¬ꤷޤ١.configե뤫make줿֥ͥ١
ͥפȤȡ븡оconfigѥͥΥ١
ͥΥʬθоconfigܤͥ륵˵
ܤ֥ѥȡפȤʤޤѥ̤ؤΥѥȤƱͤ¬ꡦ
Фޤ

bottom-upץˤƤtop-downץƱ͡KconfigSizeġ
configܤΰ¸ưŪ˲褷ޤʤξԤǤϲ
ۤʤޤtop-downץǤϸоconfigܤ¸ܤ
̵ˤΤФbottom-upץǤϸоconfigܤ¸
ܤͭˤޤ

äơ嵭ѥȤϸоconfigܤ¸configܤͭ
ʤäȤˤͿʬޤǤޤ
ΤKconfigSizeġϡоconfigñȤǤΥѥȤ
Ф褦ȻߤޤñȥѥȤλФϰʲΤ褦˹Ԥޤ

CONFIG_X depdends CONFIG_Y Ȥconfigܤꡢоconfig
Ȥ CONFIG_X ꤵƤȤޤξ硢KconfigSizeġ
ϰ¸ư褷CONFIG_XCONFIG_Y Ȥ =y ȤCONFIG_X
.configեͥmakeޤ
ƱоconfigܥꥹȤǡCONFIG_Y⸡оݤȤƻꤵƤ
Ȥޤξ硢CONFIG_YѤ.configեϡCONFIG_X=n, CON
FIG_Y=y ȤʤäƤޤ
äKconfigSizeġϡCONFIG_XѥͥΥCONFIG_Y
ѥͥΥơκʬCONFIG_XΡñȥѥȡ
ȤƻФޤ
KconfigSizeġϡǤ¤ñȥѥȤ򻻽Ф褦Ϥޤ
CONFIG_YоݤȤƻꤵƤʤäCONFIG_Xñȥ
ѥȤϻФǤޤ󡣤ξñȥѥȤη׻̥եˤϡ
CONFIG_X+CONFIG_Y ˤ륤ѥȡפϿޤͤȤϡCONF
IG_Xѥͥȥ١ͥΥʬǤ

ʾΤ褦ˡbottom-upץˤ븡ڤˤϡ
- ͥС󤴤Ȥ˸оconfigܥꥹȤĴɬפ
- оconfigƤñȥѥȤ򻻽Ф뤿ˤϡˤƿ
  ˸оconfigܥꥹȤꤹɬפ
Ȥޤ
äơ̾top-downץˤ븡ڤԤɤƤɬפʾ
Τbottom-upץѤ뤳Ȥ򤪴ᤷޤ



top-down ץǤθоconfigܥꥹ
============================================================

top-downץǻѤ븡оconfigܥꥹȤν

top-downץθоconfigܥꥹȤñǤ
ŪˤϡԤ˰ĤġѥȤ򸡾ڤconfigܤ¤٤
Ǥconfigܤϡ١.cofnigեͭȤʤäƤ
ΤꤷƤ
ʲ򼨤ޤ

--- оconfigܥꥹȤtop-downץ ---

CONFIG_NTFS_FS
CONFIG_ISO9660_FS
CONFIG_USB
CONFIG_INET
MENU TCP/IP networking

--- ޤ ---

оݤconfigܤϡĤˡǻꤹ뤳ȤǤޤ
-configܥ̾CONFIG_*ˤǻꤹ
    Ǥϡ"CONFIG_NTFS_FS", "CONFIG_INET" etc. 
    
-KconfigΥץץʸǻꤹ
    ԤƬ"MENU"Ȥ뤳ȤǡKconfigΥץץʸǸо
    ꤹ뤳ȤǤޤ
    Ǥϡ"MENU TCP/IP networking" ޤ
    "MENU TCP/IP networking" ϡ CONFIG_INET ΥץץʸǤ
    äơ"CONFIG_INET"  "MENU TCP/IP networking" ϡƱ̣
    Ǥ
    ̾Ʊ̣λ2ԤȤϤޤ󡣾嵭ϤޤȤ
      ªƤ
    MENU ɤѤ뤳ȤǡCONFIG_* ȤΥܥ
    ʤܤ˰¸configܤǤɤ٤ΥѥȤä
    Τڤ뤳ȤǤޤ
    㤨С"MENU Ethernet (10 or 100Mbit)" Ȼꤹ뤳Ȥǡ
    make menuconfig  "Ethernet (10 or 100Mbit)" ʲɽɥ
    Ф̤Ϳƶ򸡾ڤ뤳ȤǤޤ
    ʥ١.configեʣΥɥ饤ФͭȤƤ硢
      ڷ̤ȤƤιפϤޤ

١.configե̵CONFIG_*=nˤȤʤäƤΤꤷ
硢configܤΥѥ¬ϼԤޤ
ʷ̤ˡּԡפϿޤ



bottom-up ץǤθоconfigܥꥹ
============================================================

bottom-upץǻѤ븡оconfigܥꥹȤν
ޤ
bottom-upץθоconfigܥꥹȤǤϡʲΣĤꤷ
ޤ

- ͭCONFIG_*=yˤˤconfig
    =b ǥޡޤ
- оݤconfig
    =f ǥޡޤ

ʲ򼨤ޤ

--- оconfigܥꥹȤbottom-upץ ---

CONFIG_MPENTIUMM=b
CONFIG_MMU=b
CONFIG_SWAP=f
CONFIG_MTD=f
CONFIG_INET=f

--- ޤ ---

CONFIG_MPENTIUMM, CONFIG_MMU ͭˤconfigܤǤ
=bǥޡޤ
CONFIG_SWAP, CONFIG_MTD, CONFIG_INET оݤconfigܤǤ
=fǥޡޤ

ΥꥹȤˤäơʲ˼Ĥ.configե뤪ӥͥ뤬
ޤ

CONFIG \ No|  0 |  1 |  2 |  3 
-------------------------------
MPENTIUMM  | =y | =y | =y | =y 
MMU        | =y | =y | =y | =y 
SWAP       | =n | =y | =n | =n 
MTD        | =n | =n | =y | =n 
INET       | =n | =n | =n | =y 

No.0 : ١ͥ
No.1 : CONFIG_SWAPѥͥ
No.2 : CONFIG_MTDѥͥ
No.3 : CONFIG_INETѥͥ

ʤºݤˤϾ嵭configܤ¾ˡоcofnigܤ¸config
ܤͭˤʤޤñΤάޤ



ġե
============================================================

ġեKconfigSizeġưꤹ뤿Υե
KconfigSizeġκǾ̥ޥ "kconfigsize" ϡޥɥ饤
ѥ᡼ȤƤեޤ

ϳƹԤˡ
<key>=<value>
ȤƹԤޤ

value˥ѥꤹܤХѥɽѤϡTESTROOT 
ȤƲᤷޤ
㡧
    TESTROOT=/home/foo/kconfigsize
  ξ硢
    WORK_PATH=../tmp
    WORK_PATH=/home/foo/tmp
  Ʊ̣ˤʤޤ

"#" ǻϤޤԤϥȤȤƲᤵ졢̵뤵ޤ

ʲǽʳkeyˤĤޤ
־άǽפθγ()ϡάΥǥեͤɽޤ


TESTROOT=<value>
------------------------------
  ꡧɬ
  KconfigSizeġκǾ̥ǥ쥯ȥΥѥ򡢺Ǿ̥ǥ쥯ȥ̾
ޤХѥǵҤƤ
  㡧
    TESTROOT=/home/foo/tools/kconfigsize

TEST_NAME=<value>
------------------------------
  ꡧɬ
  ڤ̾򵭽ҤƤ
  ǻꤷƤϡʲΤ˻Ȥޤ
    - DBեʺǽϡˤΥե̾
      DB_PATH ι໲ȡ
    - ֽϤǼ뤿Υǥ쥯ȥ̾
      WORK_PATH ι໲ȡ


DB_PATH=<value>
------------------------------
  ꡧάǽTESTROOT)
  KconfigSizeġκǽϤǤDBեϤǥ쥯ȥ
  ꤷƤ
  ꤷǥ쥯ȥ꤬¸ߤʤϡ˺ޤ
  㡧
      TEST_NAME=test_2.6.8
      DB_PATH=/home/foo/dbs
    ξ硢ʲDBե뤬Ϥޤ
      /home/foo/dbs/test_2.6.8_{td|bu}.db
    {td|bu} ϡtop-downץǤ"td"bottom-upץǤ
    "bu"Ѥޤ

WORK_PATH=<value>
------------------------------
  ꡧάǽTESTROOT)
  KconfigSizeġ뤬ֽϥե֤ǥ쥯ȥ
  Ƥ
  ꤷǥ쥯ȥ꤬¸ߤʤϡ˺ޤ
  㡧
      TEST_NAME=test_2.6.8
      WORK_PATH=/home/foo/tmp
    ξ硢ʲΥǥ쥯ȥֽϥե뤬Ϥޤ
      /home/foo/tmp/test_2.6.8/work/
         ... ڷ̤ΥƥȥեϤޤ
      /home/foo/tmp/test_2.6.8/kernel/
         ... .configե롢ͥ륤᡼Ϥޤ

KERNEL_CONFIG=<value>
------------------------------
  ꡧtop-downץǤɬ
        bottom-upץǤ
  top-downץǻѤ.configեꤷƤ
  KconfigSizeġϡܤ̵ͭtop-down/bottom-upΤɤ
  Υץꤵ줿ȽǤޤ

TARGET_LIST=<value>
------------------------------
  ꡧɬ
  оconfigܥꥹȥեꤷƤ

KERNEL_SOURCE=<value>
------------------------------
  ꡧɬ
  ͥ륽ĥ꡼ꤷƤ
  㡧
    KERNEL_SOURCE=/home/foo/kernels/linux-2.6.10

MAKE_TARGET=<value>
------------------------------
  ꡧɬ
  ͥmakeΥåȤꤷƤ
  㡧
    bzImage

CROSS_COMPILE=<value>
------------------------------
  ꡧάǽʤʤ
  ͥ򥯥ѥ뤹硢ѥΥץեå
  Ƥ
  㡧
    CROSS_COMPILE=arm-linux-

VERSION=<value>
------------------------------
  ꡧɬ
  ڤԤͥΥС򵭽ҤƤ

ARCH=<value>
------------------------------
  ꡧɬ
  ͥΥåȥƥꤷƤ
  㡧
    ARCH=i386

MACH=<value>
------------------------------
  ꡧάǽʤʤ
  ͥΥåȥޥ̾ꤷƤ
  ιܤǻꤷƤϡϿΤ˻Ѥޤ
  ͥmakeˤϲϤڤܤޤ
  㡧
    MACH=pc

DO_TEST=<value>
------------------------------
  ꡧɬ
  ڼ̤ꤷƤ
  ʲǤޤ
    size  ͥŪ򸡾ڤޤ
    mem   ͥλѥ̤򸡾ڤޤ
  ξ»ܤϡǶڤä
    DO_TEST=size mem
  ȻꤷƤ

******************************
ʲ
  DO_TEST=* mem
ξΤɬפܤǤ
  DO_TEST=size
ξ̵뤵ޤ
doc/target_jp.txt ⻲ȤƤ
******************************

RESET_HELPER=<value>
------------------------------
  ꡧDO_TEST=* mem Ǥɬ
  åȥޥꥻåȤ뤿Υޥɡʥꥻåȥإѡˤ
  Ƥ
  㡧
    RESET_HELPER=./bin/local/parallel_reset.sh

  KconfigSizeĥ꡼ˤȤơʲΥꥻåȥإѤѰդƤ
  
    - bin/local/parallel_reset.sh
      bin/local/treset (src/treset.c)
        ѥݡȤѤƥåȥޥŸ򥳥ȥ뤹
        Υץtresetˤȡ
        åѡץȡparallel_reset.sh
    - bin/local/kill_qemu.sh
        åȥޥȤqemuѤΥꥻåȥإѡ

RESET_HELPER_PARAM=<value>
------------------------------
  ꡧάǽʤʤ
  ꥻåȥإѤϤޥɥ饤ѥ᡼ꤷƤ
  ѥ᡼ʣϡǶڤäƤ
  㡧
    RESET_HELPER_PARAM=./bin/local/treset

MEM_MEASURE=<value>
------------------------------
  ꡧDO_TEST=* mem Ǥɬ
  åȥޥȤ̿ѥץʥȥ꡼ॳСˤư
  뤿ΥޥɤꤷƤ
  㡧
    MEM_MEASURE=./bin/local/sstream

  KconfigSizeĥ꡼ˤȤơʲΥȥ꡼ॳСѰդ
  Ƥޤ
    - bin/local/sstream (src/sstream.c
        åȤꥢ륳󥽡³Ƥ˻Ѥ륹
        ȥ꡼ॳС
    - bin/local/mem_qemu.sh
        åȥޥȤqemuѤΥȥ꡼ॳС

MEM_MEASURE_PARAM=<value>
------------------------------
  ꡧάǽʤʤ
  ȥ꡼ॳСϤޥɥ饤ѥ᡼ꤷƤ
  ѥ᡼ʣϡǶڤäƤ
  㡧
    MEM_MEASURE_PARAM=./conf/serial.config

INSTALL_IMAGE=<value>
------------------------------
  ꡧDO_TEST=* mem Ǥɬ
  åȥޥ󤬥ͥɤ롢ۥȥޥΥѥ
  ꤷƤ
  åȥޥϤꤵ줿ѥ饫ͥɤ
  ֡Ȥ褦ꤵƤɬפޤ

MEM_RESULT_KEY=<value>
------------------------------
  ꡧDO_TEST=* mem Ǥɬ
  åȥޥ󤬽Ϥ롢¬̤̤뤿Υ
  ɤꤷƤKconfigSizeġϤΥɤƬ
  ʸ¬̤ȤƼ갷ޤ
  㡧
    MEM_RESULT_KEY=RST

RESET_KEY=<value>
------------------------------
  ꡧάǽʤʤ
  åȥޥ󤬥ꥻåȲǽʾ֤ˤʤäȤ򼨤åʥ
  åȲǽʸˤ̤뤿ΥɤꤷƤ
  KconfigSizeġϤΥɤƬˤʸꥻåȲǽʸ
  ȤƼ갷ޤ
  KconfigSizeġϥ¬̤ä塢ꥻåȲǽ
  ʸ󤬽ϤΤԤޤꥻåȲǽʸȡ
  RESET_DELAY[]ԤäƤ饿åȤꥻåȤޤ
  ΥꥻåȤRESET_TIMEOUT[]вᤷƤꥻåȲǽʸ
  󤬽ϤʤäϡॢȤȤ¨¤˥ꥻåȤԤ
  ޤ
  RESET_KEYꤵƤʤϡ¬̤ä
  RESET_DELAY[]ԤäƤ̵˥ꥻåȤԤޤ
  㡧
    RESET_KEY=System halt

RESET_TIMEOUT=<value>
------------------------------
  ꡧάǽ0
  ꥻåȲǽʸRESET_KEYǻˤԤĥॢȻ֤ñ
  ǻꤷƤ
  ΥꥻåȤRESET_TIMEOUT[]вᤷƤꥻåȲǽʸ󤬽
  Ϥʤä硢åȤ¨¤˥ꥻåȤޤ
  RESET_TIMEOUTꤵƤʤ硢ޤRESET_TIMEOUT0ꤵ
  ƤϡॢȻ̵֤¤˥åȤޤ

RESET_DELAY=<value>
------------------------------
  ꡧάǽ0)
  ꥻåȲǽʸRESET_KEYǻˤϤƤ顢ºݤ˥
  åȥޥꥻåȤޤǤԤ֤ñ̤ǻꤷƤ
  RESET_KEYꤵƤʤϡ¬̤ä
  ꥻåȤޤǤԤ֤ˤʤޤ
  RESET_DELAYꤵƤʤ硢Ԥ֤0[]˥åȤޤ


